package com.itheima.ydd.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.ydd.common.R;
import com.itheima.ydd.entity.YddTag;
import com.itheima.ydd.service.IYddTagService;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2022-05-22
 */
@RestController
@RequestMapping("/ydd_tag")

public class YddTagController {
    @Autowired
    private IYddTagService yddTagService;

    /**
     * 新增标签
     * @param yddTag
     * @return
     */
    @PostMapping("/add")
    public R add(@RequestBody YddTag yddTag) {
        yddTagService.save(yddTag);
        return R.success("data", yddTag);
    }

    /**
     * 分页查询
     * @param tagname
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public R list(String tagname, int page, int limit){
        Page<YddTag> yddTagPage = new Page(page,limit);
        LambdaQueryWrapper<YddTag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(tagname), YddTag::getTagname, tagname);
        yddTagService.page(yddTagPage, queryWrapper);

        R r = R.success("data", yddTagPage.getRecords());
        //总页数
        r.getData().put("totalPages",(int)yddTagPage.getPages());
        //每页显示数
        r.getData().put("pageSize",yddTagPage.getSize());
        //当前页码值
        r.getData().put("currentPage",yddTagPage.getCurrent());
        //总条数
        r.getData().put("count",(int)yddTagPage.getTotal());
        return r;
    }

    /**
     * 删除标签
     * @param id
     * @return
     */
    @GetMapping("/del")
    public R del(String id) {
        yddTagService.removeById(id);
        return R.success("data", "删除成功");
    }


    /**
     * 修改时数据回显
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public R rowInfo(String id) {
        YddTag yddTag = yddTagService.getById(id);
        R r = R.success("id", yddTag.getId());
        r.getData().put("tagname", yddTag.getTagname());
        r.getData().put("defaultData", yddTag.getDefaultData());
        return r;
    }

    /**
     * 修改标签
     * @param yddTag
     * @return
     */
    @PostMapping("/update")
    public R update(@RequestBody YddTag yddTag) {
        LambdaUpdateWrapper<YddTag> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(YddTag::getTagname, yddTag.getTagname());
        updateWrapper.eq(YddTag::getId, yddTag.getId());
        yddTagService.update(updateWrapper);
        return R.success("data", yddTag);
    }

    /**
     * 标签列表全部
     * @return
     */
    @GetMapping("/all")
    public Map all() {
        List<YddTag> list = yddTagService.list();
        HashMap<Object, Object> map = new HashMap<>();
        map.put("errno", 0);
        map.put("errmsg", "");
        map.put("data", list);
        return map;
    }
}
